Virtual reality controller

ABSTRACT

The present concepts relate to a virtual reality controller that enables fine control of virtual objects using natural motions involving the dexterity of the user&#39;s fingers and provides realistic haptic sensations to the user&#39;s fingers. The controller may have a rigid structure design without moving parts. Force sensors under finger rests can detect forces exerted by user&#39;s fingers. Actuators can render haptic feedback from the virtual reality world to the user&#39;s fingers. The controller may include one or more trackpads on which the user may slide her fingers. The controller may be used for exploring and manipulating virtual objects, for example, by grasping, releasing, rotating, and feeling the surface of virtual objects.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate implementations of the presentconcepts. Features of the illustrated implementations can be morereadily understood by reference to the following descriptions inconjunction with the accompanying drawings. Like reference numbers inthe various drawings are used where feasible to indicate like elements.In some cases, parentheticals are utilized after a reference number todistinguish like elements. Use of the reference number without theassociated parenthetical is generic to the element. The accompanyingdrawings are not necessarily drawn to scale. In the figures, theleft-most digit of a reference number identifies the figure in which thereference number first appears. The use of similar reference numbers indifferent instances in the description and the figures may indicatesimilar or identical items.

FIG. 1 illustrates a virtual reality system, consistent with someimplementations of the present concepts.

FIGS. 2A and 2B illustrate different perspective views of a controller,consistent with some implementations of the present concepts.

FIGS. 3A through 3E show schematic drawings of the parts of acontroller, consistent with some implementations of the presentconcepts.

FIGS. 4A and 4B show block diagrams of the components of a controller,consistent with some implementations of the present concepts.

FIG. 5 shows block diagrams of example configurations of a virtualreality system, consistent with some implementations of the presentconcepts.

FIGS. 6A through 6E illustrate virtual renderings of manipulating avirtual object, consistent with some implementations of the presentconcepts.

FIG. 7 shows a flowchart illustrating processes involved in grasping avirtual object using a controller, consistent with some implementationsof the present concepts.

FIG. 8 shows a flowchart illustrating processes involved in releasing avirtual object using a controller, consistent with some implementationsof the present concepts.

FIG. 9 shows a flowchart illustrating processes involved in sliding avirtual finger on a virtual object surface using a controller,consistent with some implementations of the present concepts.

FIG. 10 shows a flowchart illustrating processes involved in rotating avirtual object using a controller, consistent with some implementationsof the present concepts.

DETAILED DESCRIPTION

The present concepts relate to a controller that can be used in avirtual reality environment (including augmented reality and mixedreality) to simulate natural motions. The controller may be a handheldrigid natural user interface (NUI) that can be used to manipulatevirtual objects using fine-grained dexterity manipulations. Thecontroller can also provide a multipurpose tactile experience.

Conventional virtual reality controllers vary greatly in design but haveseveral drawbacks. Typical commercial controllers that are commonly usedwith video game systems are bulky handheld controllers with joysticks,buttons, and/or triggers. These controllers, however, do not mimicnatural motions. Moreover, haptic sensations created by vibrotactilebuzzing of the entire controller are underwhelming. These controllersfail to generate compelling forms of haptic feedback including graspingsensations, compliance, and tactile sensations.

Other conventional controllers that mimic natural hand motions can havea relatively simple design and can be held in the user's hand. Suchcontrollers may be gripped using the user's palm (commonly referred toas a power grip) and allow manipulation of virtual objects only througharm and wrist motions. They may not allow the user to use the dexterityof her fingers for finer manipulation of virtual objects as she would inreal life.

Other conventional controllers include finger-worn tactile interfaces.Such controllers enable precise touch manipulation and provide realisticdexterous experience derived from cutaneous pressure-sensitivestimulation at the fingertips. However, they have limited forceful inputbecause they have no structure that enables a firm grip by the user'shand.

Conventional glove-like controllers can enable both power grip andhigh-precision manipulation. Such controllers require haptic rigidity tosimulate a power grip or touching of virtual objects. Accordingly, theymay include many electromagnetic motors and brakes to provide realisticsensations. Therefore, such controllers are very complex, which drivesup cost and reduces reliability. These controllers may have an array offlexible and moving parts, and many expensive components, such aselectromagnetic motors and gears. They are also difficult andtime-consuming to put on compared to other controllers that can easilyand quickly be picked up.

To address the problems associated with conventional virtual realitycontrollers, the present concepts relate to a multi-purpose hapticcontroller that can be stably grasped using a power grip while enablingfine control of virtual objects using natural motions. The controllercan also provide convincing realistic cutaneous-level sensations. Thecontroller may have a rigid design that can enable efficient andcost-effective mass manufacturing.

The controller can sense finger motions and/or forces, and thus enablethe user to perform natural dexterous finger-based interaction andexploration of virtual objects. In some implementations, the controllermay include a trackpad (also known as a touchpad) that the user can useby sliding her thumb or other fingers freely on a plane to explore andinteract with virtual objects. The controller according to the presentconcepts can enable more precise manipulation of virtual objects athuman-scale forces compared to conventional virtual reality controllers.For instance, the user can grasp a virtual object using a tripod-typegrip with the thumb and two other fingers. The user can dexterouslymanipulate the virtual object, for example, by feeling the virtualobject's surface or rotating the virtual object. The user can alsorelease her fingers and let go of the virtual object.

The controller can also output compelling haptic sensations to theuser's fingers and thereby provide a realistic virtual realityexperience. For example, the controller may produce haptic sensationsthat represent squeezing, shearing, or turning an object. The controllercan render a wide range of compelling haptic feedback, includingcompliance of virtual object materials and the texture of virtual objectsurfaces, despite its rigid design. The controller can producecompelling haptic sensations without resorting to human-scale forcesactuated by multiple motors along multiple degrees-of-freedom.

FIG. 1 illustrates a virtual reality system 100, consistent with someimplementations of the present concepts. The virtual reality system 100may include a base station 102. The base station 102 can includehardware and/or software for generating and executing a virtual realityworld, including receiving and processing inputs from a user 104, andgenerating and outputting feedback to the user 104. The base station 102may be any computing device, including a personal computer (PC), server,gaming console, smartphone, tablet, notebook, automobile, simulator,etc.

In some implementations, the virtual reality system 100 can include aheadset 106. The headset 106 may be, for example, a head-mounted display(HMD) that receives visual information from the virtual reality worldbeing executed by the base station 102 and includes a display fordisplaying the visual information to the user 104. The user 104 may wearthe headset 106 on her head. The headset 106 may also receive auditoryinformation associated with the virtual reality world from the basestation 102 and include speakers to render the auditory information tothe user 104. In some implementations, the headset 106 may include oneor more sensors (not shown in FIG. 1) for providing inputs to the basestation 102. The sensors may include, for example, buttons,accelerometers, gyroscopes, cameras, microphones, etc. The headset 106,therefore, may be capable of detecting objects in the user'ssurrounding, the position of the user's head, the direction the user'shead is facing, whether the user's eyes are opened or closed, whichdirection the user's eyes are looking, etc.

The virtual reality system 100 may further include a controller 108.Consistent with the present concepts, the controller 108 may be ahandheld device that the user 104 can hold in her hand 110 andmanipulate with her fingers to provide inputs to the base station 102.The controller 108 may include sensors 112 capable of detecting fingermotions and/or forces. Example sensors 112 are introduced in connectionwith FIGS. 3A-3E. Furthermore, the controller 108 may receive hapticinformation from the virtual reality world being executed by the basestation 102 and can render the haptic information to the user's hand 110via vibrators 114. Example vibrators 114 are introduced in connectionwith FIGS. 3A-3E.

The virtual reality system 100 described in connection with FIG. 1 isjust an example. Various configurations of the virtual reality system100 are possible. The base station 102 may communicate with the headset106 and/or the controller 108 via wire and/or wirelessly. In someimplementations, the base station 102 may be included in the headset 106or in the controller 108. The display can be a television, monitor,screen, projector, goggles, glasses, lenses, etc. The speakers can beexternal standalone speakers, build-in speakers of a computing device,headphones, earphones, etc. Moreover, although the controller 108 isillustrated in FIG. 1 as a standalone device, it may be an addition toanother peripheral device.

FIGS. 2A and 2B illustrate different perspective views of the controller108, consistent with some implementations of the present concepts. FIG.2A shows a front view of the controller 108 (i.e., viewed from thefingertip end), and FIG. 2B shows a left view of the controller 108(i.e., viewed from the thumb side). These figures will be describedtogether.

The controller 108 may include a body 202 that provides a structure towhich various parts of the controller 108 may be attached and installed.The body 202 may also house various parts of the controller 108.Optionally, the controller 108 may include a handle 204 that allows theuser 104 to hold the controller 108 in the user's hand 110. The examplecontroller 108 illustrated and described herein may be designed to beheld by the user's right hand 110, but an alternative controller may bedesigned to be held by the user's left hand, or an ambidextrouscontroller may be designed. Although the controller 108 illustrated inFIGS. 2A and 2B has the body 202 with a bar shape and the handle 204that can be gripped with a ring finger 206(4) and a pinky finger 206(5),other design configurations are possible. For example, the controller108 may include a body that has a convex shape like the surface of aball that can fit in the palm of a hand, and may include handles in theform of finger holes like that of a bowling ball. In someimplementations, the body 202 and the handle 204 may be one and thesame, or have overlapping structures.

The controller 108 may include one or more finger rests 208, where theuser 104 may place her fingers 206. For example, the controller 108 maybe operated to provide inputs using only one finger 206 or up to allfive fingers 206. In the example implementation shown in FIGS. 2A and2B, the controller 108 can be operated to provide inputs using the thumb206(1), the index finger 206(2), and/or the middle finger 206(3).Therefore, the controller 108 includes a thumb rest 208(1), an indexfinger rest 208(2), and a middle finger rest 208(3) that are rigidlyattached to the body 202.

According to some implementations, as illustrated in FIG. 2A (the frontview), the finger rests 208 may be positioned on the left side and theright side, facing away from each other, such that the user 104 canplace her fingers 206 on the outsides of the finger rests 208 and beable to squeeze the finger rests 208 together inwards (e.g., squeeze thethumb and other fingers toward one another). As will be described inmore detail below relative to FIGS. 3A-3E, the finger rests 208 caninclude sensors 112 (not shown in FIGS. 2A and 2B) for sensinginformation about the user's fingers 206 and include vibrators 114 (notshown in FIGS. 2A and 2B) for providing sensations to the user's fingers206. The finger rests 208 on opposite sides may be parallel or at anangle with respect to each other (e.g., 30 degrees difference in anglebut still substantially facing away from each other). The finger rests208 on the controller 108 may be used by the user 104 to provide inputto the base station 102 to cause virtual fingers to close, for example,to grasp a virtual object.

Optionally, in some implementations, one or more of the finger rests 208may be attached to restraints 210. The restraints 210 attached to thefinger rests 208 may form loops (fully or partially enclosed loops)around the fingers 206 of the user 104 such that the user 104 can pullher fingers 206 away from the finger rests 208 and apply negative forcesaway from the finger rests 208. The restraints 210 on the controller 108may be used by the user 104 to provide input to the base station 102 tocause virtual fingers to open, for example, to release a virtual object.Each finger rest 208 may include a restraint 210. Or a subset of thefinger rests 208 may include a restraint 210. Two or more finger rests208 may share a restraint 210.

Consistent with the present concepts, the finger rests 208 may be rigid,non-compliant structures that do not move substantially with respect tothe body 202 and with respect one another when the user 104 operates thecontroller 108 (for example, by squeezing the finger rests 208 togetheror by pulling the finger rests 208 apart using the restraints 210).Although the finger rests 208 may move miniscule amounts (for example,less than 50 microns) that are detectable by the sensors 112, the fingerrests 208 may be perceived as rigid by the user 104. Alternatively, thefinger rests 208 may be moveable parts, but their movement may notnecessarily provide inputs to the base station 102. For example, thepositions and/or the angles of the finger rests 208 may be adjustable tocomfortably fit the user's individual hand 110 and fingers 206.

FIGS. 3A through 3E show schematic drawings of the parts of examplecontroller 108, according to various implementations of the presentconcepts. These figures will be described together. The controller 108shown in FIGS. 3A through 3E may be configured to be operated by thethumb 206(1), the index finger 206(2), and/or the middle finger 206(3).Thus, the corresponding descriptions will be consistent with thisimplementation. However, many variations in the configuration of thecontroller 108 are possible. FIGS. 3A through 3E show the controller 108from different perspective views and also show various configurations ofthe controller 108. FIG. 3A shows a rear view of the controller 108,i.e., viewed from the wrist end. FIG. 3B shows a left view of thecontroller 108, i.e., viewed from the thumb side. FIGS. 3C and 3E show aright view of the controller 108, i.e., viewed from the index and middlefinger side. FIG. 3D shows a front view of the controller 108, i.e.,viewed from the fingertip end.

The controller 108 includes the body 202, a portion of which is shown inFIGS. 3A-3E. In some implementations, the body 202 may include a supportstructure portion that protrudes from the main portion of the body 202,such that the support structure portion provides a frame through whichother parts of the controller 108 can be attached to the body 202 of thecontroller 108.

In the configuration shown in FIGS. 3A-3C, the controller 108 mayinclude a thumb rest 208(1) on one side of the body 202 and may includean index finger rest 208(2) and a middle finger rest 208(3) on the otherside of the body 202. The thumb rest 208(1) may be faced away from theindex finger rest 208(2) and the middle finger rest 208(3), such thatthe user 104 can squeeze the finger rests 208 towards each other, i.e.,towards the body 202 of the controller 108, using her thumb 206(1),index finger 206(2), and middle finger 206(3).

In an alternative configuration shown in FIGS. 3D and 3E, the controller108 may include a shared finger rest 208(4) that is shared (i.e.,operated) by the index finger 206(2) and/or the middle finger 206(3),rather than having a separate index finger rest 208(2) and a separatemiddle finger rest 208(3).

The finger rests 208 may be rigidly attached to the body 202 eitherdirectly or indirectly through other parts of the controller 108.Therefore, the finger rests 208 may not move substantially when squeezedby the user's fingers 206 towards the body 202. Stated another way, thecontroller does not rely on movement of portions of the controller 108to achieve the described functionality.

In some configurations, the restraints 210 may be attached to the fingerrests 208, such that the user 104 can apply negative forces on thefinger rests 208 away from the body 202. As illustrated in FIG. 3D, anindex finger restraint 210(2) and a middle finger restraint 210(3) mayform two separate loops for the index finger 206(2) and the middlefinger 206(3), respectively. Alternatively, one restraint (not shown)may form one larger loop for both the index finger 206(2) and the middlefinger 206(3). The restraints 210 may be flexible (e.g., rubber) and/orremovable (e.g., Velcro straps). Alternatively, the restraints 210 maybe rigid (e.g., plastic). The restraints 210 may be formed tightly, suchthat the user's fingers 206 are always in contact with the finger rests208, or the restraints 210 may be formed loosely, such that the user'sfingers 206 can be lifted off the finger rests 208 even when the user'sfingers 206 are enclosed by the restraints 210.

Consistent with some implementations of the present concepts, thecontroller 108 may include various sensors 112 that are capable ofsensing information about the user's fingers 206, including, forexample, the positions of the user's fingers 206 and the amount of force(or pressure) exerted by the user's fingers 206. For instance, thecontroller 108 may include one or more force sensors 302. The forcesensors 302 may be positioned under the finger rests 208 in order todetect and measure the amount of force applied by the user's fingers 206on the finger rests 208. In one implementation, the force sensors 302may be capable of sensing up to 1.5 kilogram-force (kgf). The forcesensors 302 may be configured to push on the finger rests 208, thusadding stiffness to the finger rests 208. Accordingly, the force sensingrange may be approximately doubled to 3 kgf for the full movement rangeof the force sensors 302 (e.g., 30 microns). In some configurations, oneforce sensor 302 may detect a force applied by one finger 206. Inalternative configurations, multiple force sensors 302 may be installedunder each finger rest 208, which can enable additional ways ofmanipulating virtual objects, such as seesawing a virtual pencil using avirtual thumb and two other virtual fingers. In other configurations,one force sensor 302 may detect forces applied by multiple fingers 206.

As illustrated in FIGS. 3A-3C, the controller 108 may include a thumbforce sensor 302(1) under the thumb rest 208(1), an index finger forcesensor 302(2) under the index finger rest 208(2), and a middle fingerforce sensor 302(3) under the middle finger rest 208(3). Alternatively,as illustrated in FIGS. 3D and 3E, a shared force sensor 302(4) may beinstalled under the shared finger rest 208(4) to measure the level offorce applied by the index finger 206(2) and/or the middle finger206(3).

In some implementations, the force sensors 302 may be bias adjustedtowards the body 202, i.e., in the direction the user's fingers 206would apply force on the finger rests 208. For example, the forcesensors 302 may be mechanically biased using one or more setscrews 304(as shown in FIGS. 3A and 3D) to be placed about 10% into their forcesensing range when no pressure is applied to the finger rests 208. Inone implementation, a force sensor 302 may have a force sensing rangefrom 0 newton (N) to 15 N, and it may be biased to be at around 1.5 Nwhen no force is applied to it. Where the additional stiffness of afinger rest 208 is pushing against the force sensor 302, the forcesensing range may be 0 N to 30 N, and the force sensor 302 may be biasedat around 3 N. Accordingly, the force sensors 302 may be capable ofdetecting not only forces applied by squeezing the finger rests 208towards the body 202 but also negative forces applied when pulling thefinger rests 208 away from the body 202 by extending the user's fingers206 using the restraints 210.

Consistent with some implementations, the controller 108 may includeposition sensors capable of detecting the positions of the user'sfingers 206. For example, the controller 108 may include a trackpad 308(or a touchpad). The trackpad 308 may be installed on top of a fingerrest 208 or may be installed in lieu of a finger rest 208. The trackpad308 can detect the position of a finger 206 and thus track the slidingmovement of a finger 206 on the trackpad 308. For example, the trackpad308 may be capable of detecting approximately 130×130 differentpositions. The trackpad 308 on the controller 108 may be used by theuser 104 to provide input to the base station 102 to cause a virtualfinger to move. In some implementations, the trackpad 308 may be a2-dimensional capacitance-based copper pad. Moreover, the trackpad 308may be composed of multiple (e.g., 3×3) pads assembled together. In someimplementations, a thin sheet of acetal may be added on top of thetrackpad 308 to minimize friction with the user's finger 206.

In the configuration illustrated in FIG. 3D, the controller 108 mayinclude a thumb trackpad 308(1) for detecting the touch of the user'sthumb 206(1). The trackpads 308 may be rigidly attached to the body 202either directly or indirectly through other parts of the controller 108.For example, the thumb trackpad 308(1) may be installed on the thumbrest 208(1). In other implementations, the thumb trackpad 308(1) may beinstalled in lieu of the thumb rest 208(1), and thus acting as a thumbrest 208(1).

Furthermore, the trackpad 308 may also be capable of measuring theamount of force a finger 206 applies on the trackpad 308, in addition todetecting the position of the finger 206 on the trackpad 308. Where thetrackpad 308 has this additional capability, a force sensor 302 may beomitted under the trackpad 308. For instance, a thumb force sensor (notshown in FIG. 3D) may be installed under the thumb trackpad 308(1).However, a thumb force sensor may be unnecessary and can be omittedwhere the thumb trackpad 308(1) is capable of measuring not only theposition of the user's thumb 206(1) on the thumb trackpad 308(1) butalso the force applied by the user's thumb 206(1) on the thumb trackpad308(1).

The controller 108 may include various other sensors 112 for detectingthe user's fingers 206. For example, in alternative implementations, amechanical sensor (such as a joystick) may be installed in lieu of acapacitive sensor (such as the trackpad 308). In other implementations,the restraints 210 may include pressure sensors, such as capacitivesensors (not shown), facing the backs of the user's fingers 206 so thatthe pressure sensors can detect when the fingers 206 are lifted awayfrom the finger rests 208 and are touching the pressure sensors.

Consistent with some implementations of the present concepts, thecontroller 108 may include one or more vibrators 114, such as actuators306. For example, the actuators 306 may be voice coil actuators (VCAs)that can provide wide-band vibrotactile actuation forces with respect tothe inertial mass of the VCAs. (Although the controller 108 has beendescribed as not including moving parts, the actuators 306 move orvibrate very slightly.) The actuators 306 can play sounds (nothuman-audible sounds but rather vibrations within the audio spectrum)that provide haptic feedback. For example, a VCA may include a 9 mmdiameter voice coil and be capable of generating 55 to 75 decibels ofsound pressure level (dbSPL). The actuators 306 can thus provide akinesthetic perception, including force and proprioception. Thevibrators 114 can be any other kind of haptic output mechanisms.

The actuators 306 may be positioned under the finger rests 208 and/orthe trackpads 308 to provide haptic sensations to the user's fingers 206touching the finger rests 208 and/or the trackpads 308. In theconfiguration shown in FIGS. 3A-3C, the controller 108 may include athumb actuator 306(1) under the thumb rest 208(1), an index fingeractuator 306(2) under the index finger rest 208(2), and a middle fingeractuator 306(3) under the middle finger rest 208(3) to provide hapticsensations to the user's fingers 206. In the configuration shown inFIGS. 3D and 3E, the thumb actuator 306(1) can be positioned under thethumb trackpad 308(1) to provide haptic sensations to the user's thumb206(1), and a shared finger actuator 306(4) can be positioned under theshared finger rest 208(4) to provide haptic sensations to both the indexfinger 206(2) and the middle finger 206(3). In some implementations, acombination of multiple actuators 306 can be used to make illusions ofinertia and virtual movements between the actuators 306. The actuators306 can provide a variety of haptic feedback, while maintaining the costof the controller 108 relatively inexpensive.

FIGS. 4A and 4B show block diagrams of the components of the controller108, consistent with some implementations of the present concepts. Theblock diagram in FIG. 4A may correspond to the configuration of thecontroller 108 shown in FIGS. 3A-3C, and the block diagram in FIG. 4Bmay correspond to the configuration of the controller 108 shown in FIGS.3D and 3E.

Consistent with some implementations of the present concepts, thecontroller 108 may include a processor, such as a microcontroller 402.The microcontroller 402 may have one or more pins 404 for receivinginput signals and transmitting output signals. Consistent with thepresent concepts, the microcontroller 402 may receive signals from theforce sensors 302. The signals from force sensor 302 may include ameasurement of the level of force applied on the corresponding fingerrest 208. In some implementations, the signals from the force sensors302 may be amplified by amplifiers 406 and then routed toanalog-to-digital conversion (ADC) pins 404 of the microcontroller 402.

In some implementations, the microcontroller 402 may receive signalsfrom one or more trackpads 308. For example, where the trackpad 308 iscomposed of nine (3×3) pads, the nine pads may be wired to nine pins 404of the microcontroller 402. The signals from the trackpad 308 mayinclude a position of a finger 206 touching the trackpad 308. Thesignals may also include a measurement of the force applied by thefinger 206 on the trackpad 308.

Consistent with the present concepts, the microcontroller 402 maygenerate an input signal based on the signals received from one or moreforce sensors 302 (or from the amplifiers 406) and/or signals receivedfrom the one or more trackpads 308. The microcontroller 402 may transmitthe input signal to the base station 102. In some implementations, theinput signal may include raw signal outputs from the sensors (e.g., theforce sensors 302 and the trackpads 308), such as x-coordinate andy-coordinate positions provided by the trackpads 308 that indicate thesensed positions of the user's fingers 206, capacitance levels providedby the trackpads 308 depending on how strongly the user's fingers 206are pressing on the trackpads 308, and/or force levels provided by theforce sensors 302 depending on how strongly the user's finger 206 arepressing or pulling on the finger rests 208. In alternativeimplementations, the input signal may include interpreted data signalsthat conform to a protocol understood by the controller 108 and the basestation 102, and convey logical representations of the user's fingermotions and forces.

Consistent with the present concepts, the microcontroller 402 mayreceive an output signal from the base station 102. The microcontroller402 may generate control signals based on the output signal receivedfrom the base station 102, and may transmit the control signals viapulse-width modulation (PWM) pins 404 to drive the actuators 306. Thecontrol signals from the microcontroller 402 may be amplified by motordrivers 408, for example, using a full bridge with an external drivevoltage. In some implementations, the output signal may include signalparameters (e.g., amplitudes, frequencies, and durations) of hapticvibrations to be rendered by one or more actuators 306 in the controller108. Alternatively, the output signal may include logical commands thatthe controller 108 understands (e.g., via a lookup table stored in themicrocontroller 402 that maps the commands to certain ways of drivingthe actuators 306).

The components of the controller 108 described in connection with FIGS.4A and 4B are merely examples and are not exhaustive. The controller 108may include many other components. For example, the controller 108 mayinclude an internal power source, such as a battery, or an externalpower source. The controller 108 may include a wireless transceiver,buttons, display lights, etc.

FIG. 5 shows block diagrams of example configurations of the virtualreality system 100, consistent with some implementations of the presentconcepts. The virtual reality system 100 may include the base station102 that communicates via wire and/or wirelessly with one or moreperipheral devices 502. For instance, the base station 102 maycommunicate with the peripheral devices 502 through a network 504 viawired and/or wireless protocols. In the example illustrated in FIG. 5,the base station 102 may be a server computing device. The number ofdevices and the type of devices described and depicted are intended tobe illustrative and non-limiting. The base station 102 can include othertypes of computing devices, such as personal computers, desktopcomputers, notebook computers, cell phones, smart phones, personaldigital assistants, pad type computers, mobile computers, wearabledevices, cameras, appliances, smart devices, IoT devices, vehicles,etc., and/or any of a myriad of ever-evolving or yet-to-be-developedtypes of computing devices. The term “device,” “computer,” or “computingdevice” as used herein can mean any type of device that has some amountof processing capability and/or storage capability. Processingcapability can be provided by one or more hardware processors 508 thatcan execute data in the form of computer-readable instructions toprovide a functionality. Data, such as computer-readable instructionsand/or user-related data, can be stored on storage 510, such as storagethat can be internal or external to the device. The storage 510 caninclude any one or more of volatile or non-volatile memory, hard drives,flash storage devices, and/or optical storage devices (e.g., CDs, DVDsetc.), remote storage (e.g., cloud-based storage), among others. As usedherein, the term “computer-readable media” can include transitorypropagating signals. In contrast, the term “computer-readable storagemedia” excludes transitory propagating signals. Computer-readablestorage media include “computer-readable storage devices.” Examples ofcomputer-readable storage devices include volatile storage media, suchas RAM, and non-volatile storage media, such as hard drives, opticaldiscs, and flash memory, among others.

Consistent with the present concepts, the base station 102 may include avirtual reality module 512 that provides a virtual reality (includingaugmented reality or mixed reality) experience to the user 104. Forexample, the virtual reality module 512 may include software and usehardware resources to perform computer processing for creating andmaintaining a simulated environment, including virtual worlds andvirtual objects; generating visual, auditory, and/or haptic feedback;and processing input signals from the user 104.

Consistent with the present concepts, the base station 102 may operatein conjunction with one or more of the peripheral devices 502 to providea virtual reality experience. For example, the peripheral devices 502may include a display 514 that can render visual feedback to the user104 based on signals from the base station 102. The peripheral devices502 may also include a speaker 516 that can render auditory feedback tothe user 104 based on signals from the base station 102. The peripheraldevices may include the controller 108 that can render haptic feedback(such as kinesthetic and cutaneous feedback) to the user 104 based onsignals from the base station 102.

Furthermore, the controller 108 may provide finger movement informationto the base station 102. The peripheral devices 502 may include a camera518 that can provide visual information to the base station 102. Theperipheral devices 502 may also include a microphone 520 that canprovide auditory information to the base station 102.

The peripheral devices 502 may include wearable devices, such as glasses522 and a headset 106. These wearable devices may include one or more ofa display, a speaker, a microphone, and a camera.

FIG. 5 shows two example device configurations 524(1) and 524(2) thatcan be employed by the base station 102. The base station 102 can employeither of the configurations 524(1) or 524(2), or an alternateconfiguration. One instance of each configuration 524 is illustrated inFIG. 5. The device configuration 524(1) may represent an operatingsystem (OS) centric configuration. The device configuration 524(1) canbe organized into one or more applications 526, operating system 528,and hardware 530. The device configuration 524(2) may represent asystem-on-chip (SOC) configuration. The device configuration 524(2) maybe organized into shared resources 532, dedicated resources 534, and aninterface 536 therebetween.

In either configuration 524(1) or 524(2), the base station 102 caninclude storage/memory 510 and a processor 508. The term “processor” asused herein can also refer to hardware processors, such as centralprocessing units (CPUs), graphical processing units (GPUs), controllers,microcontrollers, field-programmable gate arrays (FPGAs),application-specific integrated circuits (ASICs), processor cores, orother types of processing devices. The base station 102 may also includeother components that are not illustrated in FIG. 5, such as a battery(or other power source), a network communication component, and/orinput-output components.

In the case of the device configuration 524(2), certain functionalityprovided by the base station 102 can be integrated on a single SOC ormultiple coupled SOCs. One or more processors 508 can be configured tocoordinate with shared resources 532, such as storage/memory 510, etc.,and/or one or more dedicated resources 534, such as hardware blocksconfigured to perform specific functions. For example, certainfunctionalities of the virtual reality module 512 may be optimized andimplemented on an FPGA.

FIGS. 6A through 6E illustrate virtual renderings of manipulating avirtual object 602, consistent with some implementations of the presentconcepts. For instance, these virtual scenes may be generated by thebase station 102 using inverse kinematics based on input signals fromthe controller 108 and transmitted by the base station 102 to thedisplay 514 to be shown to the user 104.

FIG. 6A shows virtual fingers 604 grasping the virtual object 602. Thisvisual information may have been generated by the base station 102 basedon input signals received from the controller 108 in response to theuser 104 squeezing the finger rests 208 and/or the trackpads 308 usingher fingers 206. The base station 102 may use collision dynamics tocalculate a contact point between a virtual finger 604 and the virtualobject 602, for example, by originating a ray at the tip of the virtualfinger 604 in the direction orthogonal to the corresponding finger rest208 or trackpad 308, and determining an intersection between the ray andthe virtual object 602. These calculations may be performed for eachvirtual finger 604 that has force applied to its corresponding fingerrest 208 or trackpad 308.

The base station 102 may declare an acquisition of the virtual object602 by the virtual fingers 604 when, for example, at least two raysemanating from the virtual fingers 604 in substantially oppositedirections intersect the virtual object 602 from opposite sides of thevirtual object 602 within a certain threshold distance tolerance (e.g.,1 cm) from the surfaces of the virtual object 602. Furthermore, theposition and angles of the joints of the virtual fingers 604 may beestimated using inverse kinematics. Once the virtual object 602 has beengrasped and acquired, the virtual object 602 may follow the hand motionin the virtual world.

The base station 102 may generate visual information that simulates thevirtual fingers 604 moving in the direction of the arrows 606 shown inFIG. 6A and grasping the virtual object 602. This visual information maybe transmitted by the base station 102 to the display 514 and renderedto the user 104. The rigidity of the finger rests 208, which can provideresistance pressure against the user's fingers 206 that are squeezingthe finger rests 208, combined with the contemporaneous visual feedbackshowing the virtual fingers 604 grasping the virtual object 602 canprovide a convincing experience for the user 104.

Optionally, the base station 102 may also generate haptic informationthat simulates the virtual fingers 604 grasping the virtual object 602.In some implementations, the characteristics of the haptic information,including amplitude, frequency, and/or duration, may depend on severalfactors, such as the level of force applied by the fingers 206 on thefinger rests 208 and the virtual size, shape, weight, texture,structure, material, and/or orientation of the virtual object 602. Forexample, in a scenario where the virtual object 602 is a potato chip, ifthe user's fingers 206 apply gentle forces on the finger rests 208 whenhandling the virtual potato chip, then the base station 102 may generatelittle to no haptic feedback. But if the user's fingers 206 squeeze thefinger rests 208 too hard, then the base station 102 may simulate thevirtual potato chip cracking or breaking, and generate high-frequencyvibrations as haptic feedback, thus rendering a crisp sensation to theuser's fingers 206. The haptic information may be transmitted by thebase station 102 to the controller 108 and rendered to the user'sfingers 206 via the actuators 306. Although the user's fingers 206 donot substantially move the rigid finger rests 208, the combination ofcontemporaneous visual feedback and haptic feedback may createcompelling realistic experience for the user 104. For example, the user104 may perceive a compression of the virtual object 602 even though thefinger rests 208 are rigid and do not move. Furthermore, the mind of theuser 104 may interpret the vibrations produced by the actuators 306 ascracking of the virtual object materials under pressure.

FIG. 6B shows virtual fingers 604 releasing the virtual object 602. Thisvisual information may have been generated by the base station 102 basedon input signals received from the controller 108 in response to theuser 104 releasing her fingers 206 off the finger rests 208 and/or thetrackpads 308. The base station 102 may declare the release of thevirtual object 602 by the virtual fingers 604 based on several factors.For example, the base station 102 may declare the release of the virtualobject 602 when the force applied by the user's fingers 206 on thefinger rests 208 and/or trackpads 308 is negative, i.e., the user'sfingers 206 are applying negative forces on the finger rests 208 and/ortrackpads 308 using the restraints 210. Or, the release may be declaredwhen the user's fingers 206 apply zero force on the finger rests 208and/or trackpads 308. Alternatively, the release may be declared whenthe user's fingers 206 are applying a small positive force on the fingerrests 208 and/or trackpads 308. The different scenarios for declaring arelease may be dependent on, for example, the shape of the virtualobject 602, the virtual weight of the virtual object 602, the angles atwhich the virtual fingers 604 are grasping the virtual object 602, thevirtual texture (smooth or rough) of the virtual object 602, whether thevirtual object 602 is resting on a virtual surface or being held up inthe air when being released by the virtual fingers 604, etc. In someimplementations, the base station 102 may not declare a release of thevirtual object 602 while the virtual hand (and the virtual fingers 604)are holding up the virtual object 602 from the bottom as shown in FIG.6C.

The base station 102 may generate visual information that simulates thevirtual fingers 604 moving away from the virtual object 602 in thedirection of the arrows 608 shown in FIG. 6B and releasing the virtualobject 602. If the virtual object 602 is not already resting on avirtual surface, the base station 102 may simulate the virtual object602 falling, spinning, hitting a virtual surface, tumbling, etc.,according to the virtual world scenario. This visual information may betransmitted by the base station 102 to the display 514 and rendered tothe user 104. Realistic experience may be provided to the user 104, whopulled her fingers 206 off the finger rests 208, by contemporaneouslyshowing the virtual fingers 604 opening and thereby releasing thevirtual object 602.

Optionally, the base station 102 may also generate haptic informationthat simulates the virtual fingers 604 releasing the virtual object 602.For example, in a scenario where the virtual object 602 is a rough pieceof wood, the base station 102 may simulate the rough texture of thevirtual object 602 slipping from the grasp of the user's fingers 206 bygenerating corresponding haptic vibrations at appropriate frequencies toprovide a realistic natural experience for the user 104. The hapticinformation may be transmitted by the base station 102 to the controller108 and rendered to the user's fingers 206 via the actuators 306.

FIG. 6D shows a virtual thumb 604(1) sliding on a surface of the virtualobject 602. This visual information may have been generated by the basestation 102 based on input signals received from the controller 108 inresponse to the user 104 moving her thumb 206(1) on the thumb trackpad308(1). The base station 102 may calculate the direction and speed ofthe virtual thumb 604(1) moving on the surface of the virtual object 602based on the input signals from the controller 108.

In some implementations, the base station 102 may compare the forceapplied by the user's thumb 206(1) on the thumb trackpad 308(1) with acertain threshold to determine whether the user 104 wishes to slide thevirtual thumb 604(1) along the surface of the virtual object 602 (e.g.,to feel the surface texture of the virtual object 602) or to rotate thevirtual object 602. That is, the user 104 can slide the virtual thumb604(1) on the surface of the virtual object 602 by applying a relativelysmall force on the trackpad 308 while sliding her thumb 206(1) acrossit, or the user 104 can rotate the virtual object 602 by applying arelatively large force on the trackpad 308 while sliding her thumb206(1) across it. For example, in one implementation, the thresholdvalue may be set to 15 N, which may be the maximum force detectable bythe trackpad 308 (or by a force sensor 302 underneath the trackpad 308,or set to 13.5 N where the force sensor 302 is bias adjusted at 1.5 N).In this example, the base station 102 may slide the virtual thumb 604(1)on the surface of the virtual object 602 if less than 15 N is detectedwhile the user's thumb 206(1) slides across the trackpad 308, or thebase station 102 may rotate the virtual object 602 if at least 15 N isdetected while the user's thumb 206(1) slides across the trackpad 308.Other threshold values are possible.

The base station 102 may generate visual information that simulates thevirtual thumb 604(1) sliding along the surface of the virtual object 602in the direction of the arrow 610 shown in FIG. 6D. This visualinformation may be transmitted by the base station 102 to the display514 and rendered to the user 104.

The base station 102 may also generate haptic information that simulatesthe virtual thumb 604(1) sliding along the surface of the virtual object602. For example, the haptic information may depend on the material andsurface information, including surface texture, of the virtual object602. The amplitude of the texture feedback may be proportional to thespeed of the movement of the thumb 206(1) on the thumb trackpad 308(1).As such, the amplitude of the texture feedback may be zero when thethumb 206(1) stops moving on the thumb trackpad 308(1).

For instance, if the virtual object 602 were a virtual TV remote controland the user 104 were using the controller 108 by sliding her thumb206(1) across the thumb trackpad 308(1) to simulate a virtual thumb604(1) sliding across the virtual TV remote control, then the basestation 102 may generate appropriate haptic information to simulate thevirtual thumb 604(1) sliding across the bumps and dips between thevirtual TV remote control buttons and to simulate the textures of softrubbery buttons and hard smooth plastic body of the virtual TV remotecontrol. For example, when the virtual thumb 604(1) crosses an edge of avirtual button, the base station 102 can generate haptic feedback with ahigh-amplitude impulse that simulates a bump. The base station 102 canalso generate haptic feedback that simulates a texture of rubber and aforce-displacement profile of a soft button using known techniques. Thehaptic information may be transmitted by the base station 102 to thecontroller 108 and rendered to the user's thumb 206(1) via a thumbactuator 306(1) under the thumb trackpad 308(1).

FIG. 6E shows the virtual fingers 604 rotating the virtual object 602.This visual information may have been generated by the base station 102based on input signals received from the controller 108 in response tothe user 104 moving her thumb 206(1) on the thumb trackpad 308(1) whileapplying a force greater than the threshold discussed above with respectto FIG. 6D. This action may not be consistent with using natural motionsto control the virtual fingers 604 and the virtual object 602. Forinstance, the user's index finger 206(2) and middle finger 206(3) maynot move in reality but the corresponding virtual index finger 604(2)and virtual middle finger 604(3) may be visually rendered as rotating.The base station 102 may calculate the direction and speed of therotation of the virtual object 602 based on the input signals from thecontroller 108. In some implementations, the rotation of the virtualobject 602 may be bounded around a given axis, for example, when theuser 104 is rotating a virtual screwdriver or a virtual key inside avirtual lock.

In some implementations, the user 104 may be allowed to lift her finger206 off the trackpad 308 without releasing the corresponding virtualfinger 604 off the virtual object 602 being grasped. For instance, theuser 104 may slide her finger 206 on the trackpad 308, lift her finger206 off the trackpad 308, place her finger 206 back on the trackpad 308at a different position, and slide her finger 206 again on the trackpad308, and so on, in order to continue rotating the virtual object 602.(These actions may be similar to a user moving a mouse up to the edge ofa mousepad, lifting the mouse off the mousepad, setting the mouse backdown on the mousepad at a different position, and moving the mouse onthe mousepad again, and so on, in order to move a cursor on a display.)To enable this feature, the base station 102 may receive input signalsfrom the controller 108, indicating that the user 104 has lifted afinger 206 off the trackpad 308, but may not register lifting thecorresponding virtual finger 604 off the virtual object 602, asillustrated in FIG. 6C. This may be a scenario considered by the basestation 102 when determining whether to release the virtual object 602,as described above in connection with FIG. 6C. For example, the basestation 102 may determine that lifting a finger 206 off the trackpad 308immediately or soon after sliding the finger 206 along the trackpad 308may indicate that the user 104 wishes to continue rotating the virtualobject 602 rather than lifting the corresponding virtual finger 604 offthe virtual object 602. In such implementations, the user 104 mayrelease the virtual object 602 by lifting her other fingers 206 (besidesthe finger 206 being used to slide on the trackpad 308) off theircorresponding finger rests 208.

The base station 102 may generate visual information that simulates thevirtual fingers 604 rotating the virtual object 602 (i.e., changing theorientation of the virtual object 602) in the direction of the arrows612 shown in FIG. 6E. This visual information may be transmitted by thebase station 102 to the display 514 and rendered to the user 104.

The base station 102 may also generate haptic information that simulatesthe virtual fingers 604 rotating the virtual object 602. For example,the haptic information may include a pulse of vibration (e.g., 6 ms) atevery 5 degrees of rotation (similar to an old radio dial that clicks asit turns). The haptic information may be transmitted by the base station102 to the controller 108 and rendered to the user's fingers 206.

FIGS. 7-10 show flowcharts illustrating methods involving manipulatingvirtual objects using a controller and providing haptic sensations viathe controller, consistent with some implementations of the presentconcepts. The acts on the left side of the flowcharts may be performedby a base station, and the acts on the right side of the flowcharts maybe performed by the controller.

FIG. 7 shows a flowchart illustrating a grasping method 700. In act 702,the controller detects force applied on one or more finger rests and/ortrackpads on the controller by one or more of a user's fingers. Forexample, the user may use her fingers to squeeze together two or morefinger rests that are positioned on opposite sides and facing away fromeach other on the controller. The user may perform this action in orderto grasp a virtual object positioned between virtual fingers thatcorrespond to the finger rests being squeezed.

In act 704, the controller may transmit input signals indicating thatthe finger rests are being squeezed. For example, the input signals mayinclude information from one or more force sensors, including theidentifications of fingers and how much force is being applied to theforce sensors under the finger rests. In some implementations, the inputsignals may include information from one or more trackpads indicatingthe force (or pressure) with which the user's fingers are pressing onthe trackpads. In act 706, the base station may receive the inputsignals from the controller.

In act 708, the base station can interpret the input signals and applythem to the virtual world. That is, the base station may translate theinput signals from the controller (that indicate the positions of theuser's fingers and the forces applied by them) into movement ofcorresponding virtual fingers in the virtual world. In this example, thebase station may simulate the virtual fingers moving towards each other,and if there is a virtual object between the virtual fingers, the basestation can declare that the virtual fingers are grasping the virtualobject.

Furthermore, the base station may generate visual informationcorresponding to the virtual fingers closing and grasping the virtualobject. The visual information may be transmitted by the base station toa display to be rendered to the user.

The base station may also generate haptic information corresponding tothe virtual fingers grasping the virtual object. For example, anactuator may render a 6 ms pulse of vibrations at 170 Hz to theappropriate finger rest for every 0.49 N change in the force detected bythe corresponding force sensor. In act 710, the base station maytransmit output signals corresponding to the haptic information to thecontroller.

In act 712, the controller may receive the output signals from the basestation. In act 714, the controller may drive actuators in thecontroller to provide haptic sensations on the finger rests and/ortrackpads, and thus on the user's fingers.

FIG. 8 shows a flowchart illustrating a releasing method 800. In act802, the controller detects force applied on one or more finger restsand/or trackpads on the controller by one or more of the user's fingers.The detected force may be a negative force, zero force, or a smallpositive force on the finger rests and/or trackpads. For example, theuser may pull her fingers away from the finger rests. In someimplementations, the backs of the user's fingers may push againstrestraints that are attached to the finger rests and/or trackpads. Theuser may perform this action in order to release the virtual object thatis being grasped by virtual fingers.

In act 804, the controller may transmit input signals indicating thatthe finger rests are no longer being squeezed. For example, the inputsignals may include information from one or more force sensors,including the identifications of fingers and how much force is beingapplied to the force sensors under the finger rests. In someimplementations, the input signals may include information from one ormore trackpads indicating the force (or pressure), if any, with whichthe user's fingers are pressing on the trackpads. In act 806, the basestation may receive the input signals from the controller.

In act 808, the base station can interpret the input signals and applythem to the virtual world. In this example, the base station may movethe virtual fingers away from each other and release the virtual objectthat was grasped by the virtual fingers. The base station may performfurther processing of the virtual world, such as the virtual objectbeing dropped, etc.

The base station may generate visual information corresponding to thevirtual fingers releasing the virtual object. The visual information maybe transmitted by the base station to a display to be rendered to theuser. The base station may further generate auditory information, forexample, corresponding to the virtual object dropping and landing on asurface. The auditory information may be transmitted by the base stationto a speaker to be rendered to the user.

The base station may also generate haptic information corresponding tothe virtual fingers releasing the virtual object. In act 810, the basestation may transmit output signals corresponding to the hapticinformation to the controller.

In act 812, the controller may receive the output signals from the basestation. In act 814, the controller may drive the actuators in thecontroller to provide haptic sensations on the finger rests and/or thetrackpads, and thus on the user's fingers.

FIG. 9 shows a flowchart illustrating a sliding method 900. In act 902,the controller detects a finger sliding on a trackpad on the controller.For example, the user may perform this action to move a virtual fingeralong the surface of a virtual object.

In act 904, the controller may transmit input signals indicating theposition of the finger on the trackpad and/or the level of force appliedby the finger on the trackpad. Both the position information and theforce level information may be provided from the trackpad.Alternatively, the position information may be provided from thetrackpad whereas the force level information may be provided from aforce sensor underneath the trackpad. In act 906, the base station mayreceive the input signals from the controller.

In act 908, the base station may interpret the input signals and applythem to the virtual world. In this example, the base station may slidethe virtual finger on the virtual object along its surface, if the basestation determines that the level of force applied on the trackpad isless than a certain threshold. The virtual finger can be moved in thedirection corresponding to the direction of the movement of the user'sfinger on the trackpad.

Furthermore, the base station may generate visual informationcorresponding to the virtual finger sliding along the surface of thevirtual object. The visual information may be transmitted by the basestation to a display to be rendered to the user.

The base station may also generate haptic information corresponding tothe virtual finger sliding on the surface of the virtual object. Forexample, the haptic information may be dependent on the surface textureof the virtual object. In act 910, the base station may transmit outputsignals corresponding to the haptic information to the controller.

In act 912, the controller may receive the output signals from the basestation. In act 914, the controller may drive an actuator in thecontroller to provide haptic sensations on the trackpad and thus on theuser's finger.

FIG. 10 shows a flowchart illustrating a rotating method 1000. In act1002, the controller detects a finger sliding on a trackpad on thecontroller. For example, the user may perform this action to rotate thevirtual object using the virtual fingers.

In act 1004, the controller may transmit input signals indicating theposition of the finger on the trackpad and/or the level of force appliedby the finger on the trackpad. Both the position information and theforce level information may be provided from the trackpad.Alternatively, the position information may be provided from thetrackpad whereas the force level information may be provided from aforce sensor underneath the trackpad. In act 1006, the base station mayreceive the input signals from the controller.

In act 1008, the base station may interpret the input signals and applythem to the virtual world. In this example, the base station may rotatethe virtual object being grasped by the virtual fingers, if the basestation determines that the level of force applied on the trackpad isgreater than a certain threshold. The virtual object can be rotated in adirection corresponding to the direction of the movement of the user'sfinger on the trackpad.

Furthermore, the base station may generate visual informationcorresponding to the virtual object being rotated by the virtualfingers. The visual information may be transmitted by the base stationto a display to be rendered to the user.

The base station may also generate haptic information corresponding tothe rotation of the virtual object. In act 1010, the base station maytransmit output signals corresponding to the haptic information to thecontroller.

In act 1012, the controller may receive the output signals from the basestation. In act 1014, the controller may drive actuators in thecontroller to provide haptic sensations on the trackpad and the fingerrests and thus provide haptic feedback to the user's fingers.

Various device examples are described above. Additional examples aredescribed below. One example includes a system comprising a controllerand a base station including a base station processor configured to:execute a virtual reality world including a virtual object and virtualfingers, receive input signals from the controller, in response to theinput signals, manipulate the virtual fingers and/or the virtual objectand generate output signals based at least on the manipulation, andtransmit the output signals to the controller. The controller includes athumb rest and at least one finger rest facing away from each other, thethumb rest and the at least one finger rest being substantially rigid, athumb force sensor positioned under the thumb rest and configured tosense forces applied to the thumb rest, at least one finger force sensorpositioned under the at least one finger rest and configured to senseforces applied to the at least one finger rest, a thumb actuatorpositioned under the thumb rest and configured to provide hapticsensations on the thumb rest, and at least one finger actuatorpositioned under the at least one finger rest and configured to providehaptic sensations on the at least one finger rest. The controller alsoincludes a controller processor configured to generate the input signalsbased at least on the forces sensed by the thumb force sensor and/or theat least one finger force sensor, the input signals not being based onmovement of the thumb rest and the at least one finger rest, transmitthe input signals to the base station, receive the output signals fromthe base station, and drive the thumb actuator and/or at least onefinger actuator based at least on the output signals.

Another example can include any of the above and/or below examples wherethe controller further includes a trackpad positioned on the thumb restand the controller processor is configured to generate the input signalsfurther based at least on a position of a thumb on the trackpad.

Another example includes a device comprising finger rests thatsubstantially face away from each other, the finger rests beingsubstantially rigid, one or more force sensors that are positioned underthe finger rests, the one or more force sensors being configured tosense forces applied against the finger rests by fingers, a trackpadconfigured to sense a position of one of the fingers that touches thetrackpad, and one or more actuators that are positioned and configuredto provide haptic sensations on the finger rests and/or the trackpad.The device also includes a processor configured to generate inputsignals based at least on forces applied by the fingers on the fingerrests and/or the position of the one of the fingers on the trackpad, anddrive the actuators based at least on output signals. The device alsoincludes a transceiver configured to transmit the input signals andreceive the output signals.

Another example can include any of the above and/or below examples wherethe device further comprises restraints that are attached to the fingerrests, the restraints and the finger rests being configured to formloops around the fingers, wherein the one or more force sensors aremechanically biased, and wherein the one or more force sensors arecapable of sensing the fingers pulling on the restraints away from thefinger rests.

Another example can include any of the above and/or below examples wherethe device further comprises a handle for holding the device using atleast a palm of a hand.

Another example can include any of the above and/or below examples whereat least two of the force sensors are positioned under one of the fingerrests.

Another example can include any of the above and/or below examples whereone of the actuators provides haptic sensations to at least two fingers.

Another example can include any of the above and/or below examples whereat least two of the actuators are positioned under one of the fingerrests.

Another example can include any of the above and/or below examples wherethe trackpad is a capacitance sensor.

Another example includes a method comprising executing a virtual realityworld including a virtual object and virtual fingers of a virtual hand,receiving a closing input signal from a controller that includes fingerrests facing away from each other, the closing input signal indicatingthat fingers are applying forces against the finger rests, in responseto the closing input signal, generating a grasp haptic output signalthat simulates the virtual fingers grasping the virtual object, andtransmitting the grasp haptic output signal to the controller, the grasphaptic output signal causing the controller to drive actuators in thecontroller that generate haptic sensations on the finger rests.

Another example can include any of the above and/or below examples wherethe method further comprises determining a virtual contact point betweenone of the virtual fingers and the virtual object by originating a rayat the one of the virtual fingers in a direction that is orthogonal tothe corresponding one of the finger rests and calculating anintersection point between the ray and the virtual object.

Another example can include any of the above and/or below examples wherethe method further comprises declaring a grasp acquisition of thevirtual object by the virtual fingers when two or more rays originatingfrom the virtual fingers intersect the virtual object from oppositesides.

Another example can include any of the above and/or below examples wherethe method further comprises estimating positions of virtual joints ofthe virtual hand.

Another example can include any of the above and/or below examples wherethe method further comprises receiving an opening input signal from thecontroller while the virtual fingers are grasping the virtual object,the controller including restraints attached to the finger rests, theopening input signal indicating that the fingers are applying negativeforces away from the finger rests, in response to the opening inputsignal, generating a releasing visual output signal that simulates thevirtual fingers releasing the virtual object, and transmitting thereleasing visual output signal to a display.

Another example can include any of the above and/or below examples wherethe method further comprises receiving a rotating input signal from thecontroller while the virtual fingers are grasping the virtual object,the controller including a trackpad, the rotating input signalindicating that one of the fingers is sliding on the trackpad with aforce above a threshold, in response to the rotating input signal,generating a rotating haptic output signal that simulates the virtualfingers rotating the virtual object, and transmitting the rotatinghaptic output signal to the controller to generate haptic sensations.

Another example can include any of the above and/or below examples wherethe method further comprises, in response to the rotating input signal,generating a rotating visual output signal that simulates the virtualfingers rotating the virtual object and transmitting the rotating visualoutput signal to a display.

Another example can include any of the above and/or below examples wherethe virtual object is rotated in a direction corresponding to adirection of the sliding of the one of the fingers on the trackpad.

Another example can include any of the above and/or below examples wherethe method further comprises receiving a lift input signal from thecontroller while the virtual fingers are grasping the virtual object,the lift input signal indicating that the one of the fingers has liftedoff the trackpad, and in response to the lift input signal, keeping oneof the virtual fingers that corresponds to the one of the fingersgrasping the virtual object.

Another example can include any of the above and/or below examples wherethe method further comprises receiving a sliding input signal from thecontroller that includes a trackpad, the sliding input signal indicatingthat one of the fingers is sliding on the trackpad with a force below athreshold, in response to the sliding input signal, generating a slidingvisual output signal and a sliding haptic output signal that simulateone of the virtual fingers corresponding to the one of the fingerssliding on the virtual object, transmitting the sliding visual outputsignal to a display, and transmitting the sliding haptic output signalto the controller to generate haptic sensations.

Another example can include any of the above and/or below examples wherethe haptic sensations simulate a surface texture of the virtual object.

Various examples are described above. Although the subject matter hasbeen described in language specific to structural features and/ormethodological acts, the subject matter defined in the appended claimsis not necessarily limited to the specific features or acts describedabove. Rather, the specific features and acts described above arepresented as example forms of implementing the claims, and otherfeatures and acts that would be recognized by one skilled in the art areintended to be within the scope of the claims.

1. A system, comprising: a controller; and a base station including abase station processor configured to: execute a virtual reality worldincluding a virtual object and virtual fingers; receive input signalsfrom the controller; in response to the input signals, manipulate thevirtual fingers and/or the virtual object and generate output signalsbased at least on the manipulation; and transmit the output signals tothe controller; the controller including: a body; a thumb rest and atleast one finger rest rigidly attached to the body, the thumb rest andthe at least one finger rest facing away from each other, the thumb restand the at least one finger rest being substantially rigid and notsubstantially moving with respect to the body and with respect to eachother when forces are applied on the thumb rest and/or the at least onefinger rest to generate the input signals; a thumb force sensorpositioned under the thumb rest and configured to sense forces appliedto the thumb rest; at least one finger force sensor positioned under theat least one finger rest and configured to sense forces applied to theat least one finger rest; a thumb actuator positioned under the thumbrest and configured to provide haptic sensations on the thumb rest; atleast one finger actuator positioned under the at least one finger restand configured to provide haptic sensations on the at least one fingerrest; and a controller processor configured to: generate the inputsignals based at least on the forces sensed by the thumb force sensorand/or the at least one finger force sensor, the input signals not beingbased on substantial movement of the thumb rest and the at least onefinger rest with respect to the body and with respect to each other;transmit the input signals to the base station; receive the outputsignals from the base station; and drive the thumb actuator and/or atleast one finger actuator based at least on the output signals.
 2. Thesystem of claim 1, wherein: the controller further includes a trackpadpositioned on the thumb rest; and the controller processor is configuredto generate the input signals further based at least on a position of athumb on the trackpad.
 3. A device, comprising: finger rests thatsubstantially face away from each other, the finger rests beingsubstantially rigid and not substantially moving with respect to eachother when forces are applied to the finger rests to generate inputsignals; one or more force sensors that are positioned under the fingerrests, the one or more force sensors being configured to sense forcesapplied against the finger rests by fingers; a trackpad configured tosense a position of one of the fingers that touches the trackpad; one ormore actuators that are positioned and configured to provide hapticsensations on the finger rests and/or the trackpad; a processorconfigured to: generate the input signals based at least on forcesapplied by the fingers on the finger rests and/or the position of theone of the fingers on the trackpad, the input signal not being based onsubstantial movement of the finger rests with respect to each other; anddrive the actuators based at least on output signals; and a transceiverconfigured to transmit the input signals and receive the output signals.4. The device of claim 3, further comprising: restraints that areattached to the finger rests, the restraints and the finger rests beingconfigured to form loops around the fingers, wherein the one or moreforce sensors are mechanically biased, and wherein the one or more forcesensors are capable of sensing the fingers pulling on the restraintsaway from the finger rests.
 5. The device of claim 3, further comprisinga handle for holding the device using at least a palm of a hand.
 6. Thedevice of claim 3, wherein at least two of the force sensors arepositioned under one of the finger rests.
 7. The device of claim 3,wherein one of the actuators provides haptic sensations to at least twofingers.
 8. The device of claim 3, wherein at least two of the actuatorsare positioned under one of the finger rests.
 9. The device of claim 3,wherein the trackpad is a capacitance sensor.
 10. A method, comprising:executing a virtual reality world including a virtual object and virtualfingers of a virtual hand; receiving a closing input signal from acontroller that includes finger rests facing away from each other, theclosing input signal being based on forces applied by fingers againstthe finger rests and not based on substantial movement of the fingerrests with respect to each other in response to forces applied by thefingers; in response to the closing input signal, generating a grasphaptic output signal that simulates the virtual fingers grasping thevirtual object; and transmitting the grasp haptic output signal to thecontroller, the grasp haptic output signal causing the controller todrive one or more actuators in the controller that generate hapticsensations on the finger rests.
 11. The method of claim 10, furthercomprising: determining a virtual contact point between one of thevirtual fingers and the virtual object by originating a ray at the oneof the virtual fingers in a direction that is orthogonal to thecorresponding one of the finger rests and calculating an intersectionpoint between the ray and the virtual object.
 12. The method of claim11, further comprising: declaring a grasp acquisition of the virtualobject by the virtual fingers when two or more rays originating from thevirtual fingers intersect the virtual object from opposite sides. 13.The method of claim 10, further comprising: estimating positions ofvirtual joints of the virtual hand.
 14. The method of claim 10, furthercomprising: receiving an opening input signal from the controller whilethe virtual fingers are grasping the virtual object, the controllerincluding restraints attached to the finger rests, the opening inputsignal indicating that the fingers are applying negative forces awayfrom the finger rests; in response to the opening input signal,generating a releasing visual output signal that simulates the virtualfingers releasing the virtual object; and transmitting the releasingvisual output signal to a display.
 15. The method of claim 10, furthercomprising: receiving a rotating input signal from the controller whilethe virtual fingers are grasping the virtual object, the controllerincluding a trackpad, the rotating input signal indicating that one ofthe fingers is sliding on the trackpad with a force above a threshold;in response to the rotating input signal, generating a rotating hapticoutput signal that simulates the virtual fingers rotating the virtualobject; and transmitting the rotating haptic output signal to thecontroller to generate haptic sensations.
 16. The method of claim 15,further comprising: in response to the rotating input signal, generatinga rotating visual output signal that simulates the virtual fingersrotating the virtual object; and transmitting the rotating visual outputsignal to a display.
 17. The method of claim 16, wherein the virtualobject is rotated in a direction corresponding to a direction of thesliding of the one of the fingers on the trackpad.
 18. The method ofclaim 15, further comprising: receiving a lift input signal from thecontroller while the virtual fingers are grasping the virtual object,the lift input signal indicating that the one of the fingers has liftedoff the trackpad; and in response to the lift input signal, keeping oneof the virtual fingers that corresponds to the one of the fingersgrasping the virtual object.
 19. The method of claim 10, furthercomprising: receiving a sliding input signal from the controller thatincludes a trackpad, the sliding input signal indicating that one of thefingers is sliding on the trackpad with a force below a threshold; inresponse to the sliding input signal, generating a sliding visual outputsignal and a sliding haptic output signal that simulate one of thevirtual fingers corresponding to the one of the fingers sliding on thevirtual object; transmitting the sliding visual output signal to adisplay; and transmitting the sliding haptic output signal to thecontroller to generate haptic sensations.
 20. The method of claim 19,wherein the haptic sensations simulate a surface texture of the virtualobject.